From 65a186bbcbd8cc7d45104db00b19529c5cb0bde5 Mon Sep 17 00:00:00 2001 From: "kfraser@localhost.localdomain" Date: Thu, 14 Dec 2006 12:21:28 +0000 Subject: [PATCH] [NET] front: Fix crashes when xenstore watches fire multiple times. Signed-off-by: Keir Fraser --- linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c | 4 ++++ linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c | 2 ++ 2 files changed, 6 insertions(+) diff --git a/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c b/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c index da22d45bf6..0e585475de 100644 --- a/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c +++ b/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c @@ -525,6 +525,8 @@ static void backend_changed(struct xenbus_device *dev, break; case XenbusStateInitWait: + if (dev->state != XenbusStateInitialising) + break; if (network_connect(netdev) != 0) break; xenbus_switch_state(dev, XenbusStateConnected); @@ -532,6 +534,8 @@ static void backend_changed(struct xenbus_device *dev, break; case XenbusStateClosing: + if (dev->state == XenbusStateClosed) + break; netfront_closing(dev); break; } diff --git a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c index 5320368443..5dc62457db 100644 --- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c +++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c @@ -487,6 +487,8 @@ int xenbus_probe_node(struct xen_bus_type *bus, if (!xendev) return -ENOMEM; + xendev->state = XenbusStateInitialising; + /* Copy the strings into the extra space. */ tmpstring = (char *)(xendev + 1); -- 2.30.2